package tc.alert.tckejisoc.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.util.Map;

/**
 * 扁平化安全事件实体类 - SOC 安全运营中心
 * Elasticsearch 索引: soc_security_events
 */
@Data
public class EventBaseSJON {

    // ========== 基础元数据 ==========
    @JsonProperty("event_id")
    private String eventId;     // 事件唯一ID (格式: 设备类型-哈希值)

    @JsonProperty("@timestamp")
    private String timestamp;    // 事件入库时间戳 (UTC毫秒)

    @JsonProperty("event_type")
    private String eventType;   // 事件类型 (标准值: login/file_access/firewall_alert等)
    @JsonProperty("event_name")
    private String eventName;   // 事件名称

    @JsonProperty("event_rule")
    private String eventRule;   // 事件规则id
    @JsonProperty("event_time")
    private String eventTime;   // 事件时间

    @JsonProperty("severity")
    private Integer severity;   // 危险等级 (1-5)

    @JsonProperty("name")
    private Integer name;   // 日志来源名称 （火绒，waf，edr）

    // ========== 资产信息 ==========
    @JsonProperty("device_name")
    private Integer deviceName;  //安全设备名称
    @JsonProperty("device_ip")
    private Integer deviceIp;  //安全设备ip
    @JsonProperty("attack_packets")
    private Integer attackPackets;  //攻击报文


    @JsonProperty("dstassetname")
    private Integer dstassetname;  //目的资产名称

    @JsonProperty("srcassetname")
    private Integer srcassetname;  //源资产名称

    @JsonProperty(" security_domains")
    private Integer securityDomains;   //安全域

    // ========== 源端点信息 ==========
    @JsonProperty("src_ip")
    private String srcIp;       // 源IP地址

    @JsonProperty("src_type")
    private String srcType;       // 是否内部资产  0 非 1 是

    @JsonProperty("src_port")
    private Integer srcPort;    // 源端口

    @JsonProperty("src_hostname")
    private String srcHostname; // 源主机名

    @JsonProperty("src_mac")
    private String srcMac;      // 源MAC地址

    // ========== 目标端点信息 ==========
    @JsonProperty("dst_ip")
    private String dstIp;       // 目标IP

    @JsonProperty("dst_type")
    private String dstType;

    // 是否内部资产  0 非 1 是
    @JsonProperty("dst_port")
    private Integer dstPort;    // 目标端口

    @JsonProperty("dst_hostname")
    private String dstHostname; // 目标主机名




}